package com.cll.prototype.email.service;

import com.cll.prototype.common.dto.AjaxResult;
import com.cll.prototype.email.dto.TemplateEmailDto;

import java.util.Map;

/**
 * 描述信息:
 * 短信发送服务层
 * 1. 发送简单文本邮件
 * 2. 发送简单HTML邮件
 * 3. 发送带有附件的邮件
 * 4. 发送带有图片的邮件
 * 5. 根据模板发送邮件
 * @author CLL
 * @version 1.0
 * @date 2020/10/27 17:36
 */
public interface IEmailService {

    /**
     * 发送邮件
     * @param from  发送人
     * @param to    接收人
     * @param subject   邮件主体
     * @param content   发送内容
     * @return  发送结果
     */
    AjaxResult sendEmail(String from, String to, String subject, String content);

    /**
     * 发送简单文本邮件
     * @param from  发送人
     * @param to    接收人
     * @param subject   邮件主体
     * @param content   发送内容
     * @return  发送结果
     */
    AjaxResult sendTextEmail(String from, String to, String subject, String content);

    /**
     * 发送邮件
     * @param from  发送人
     * @param to    接收人
     * @param subject   邮件主体
     * @param content   发送内容
     * @return  发送结果
     */
    AjaxResult sendHtmlEmail(String from, String to, String subject, String content);

    /**
     * 发送带有附件的邮件
     * @param from  发送人
     * @param to    接收人
     * @param subject   邮件主体
     * @param content   发送内容
     * @param filePath 文件路径（磁盘存储路径）
     * @return  发送结果
     */
    AjaxResult sendAttachmentEmail(String from, String to, String subject, String content, String filePath);

    /**
     * 发送带有附件的邮件
     * @param from  发送人
     * @param to    接收人
     * @param subject   邮件主体
     * @param content   发送内容
     * @param inlineId 文件路径（磁盘存储路径）
     * @param inlinePath 文件路径（磁盘存储路径）
     * @return  发送结果
     */
    AjaxResult sendInlineEmail(String from, String to, String subject, String content, String inlineId, String inlinePath);

    /**
     * 发送模板邮件（使用thymeleaf模板引擎）
     * @param from  发送人
     * @param to    接收人
     * @param subject   邮件主体
     * @param templateName  模板名称
     * @param templateParams    模板里面需要的参数
     * @return  发送结果
     */
    AjaxResult sendTemplateEmail(String from, String to, String subject, String templateName, Map<String, String> templateParams);

    /**
     * 发送模板邮件（使用thymeleaf模板引擎）
     * @param from  发送人
     * @param to    接收人
     * @param subject   邮件主体
     * @param templateEmailDto  模板参数
     * @return  发送结果
     */
    AjaxResult sendTemplateEmail(String from, String to, String subject, TemplateEmailDto templateEmailDto);


}
